/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;


/**
 *
 * @author epl
 */
@Entity
@Table (name="invoices")
@NamedQueries({
    @NamedQuery (
        name="findByNumero",
        query="SELECT invoice FROM Invoice invoice WHERE invoice.numero = :numero"
    ),
    @NamedQuery (
        name="findByFecha",
        query="SELECT invoice FROM Invoice invoice WHERE invoice.fecha = :fecha"
    ),
    @NamedQuery (
        name="findByCliente",
        query="SELECT invoice FROM Invoice invoice WHERE invoice.cliente = :cliente"
    ),
    @NamedQuery (
        name="findByEstado",
        query="SELECT invoice FROM Invoice invoice WHERE invoice.estado = :estado"
    )
})
public class Invoice implements Serializable{
    public enum Status {EMITIDO, PAGADO, LEGALES}
    @Id
    @GeneratedValue(strategy =GenerationType.TABLE)
    private long id;
    private long numero; //numero de invoice

    @Enumerated
    private Status estado;
    private String ComentarioDeEstado;

    @OneToMany(cascade=CascadeType.ALL,targetEntity=ArticuloPedido.class)
    private List<ArticuloPedido> articulos = new ArrayList<ArticuloPedido>();

    @ManyToOne
    private Cliente cliente;
    private String transportista; //enviadoPor

    private long vendedor;
    private long numeroDePedido;
    private long requisador;
    private boolean francoABordo;
    private String terminos;
    private String comentario;

    private String fecha;
    private float totalAPagar;

    public List<ArticuloPedido> getArticulos() {
        return articulos;
    }

    public void setArticulos(List<ArticuloPedido> articulos) {
        this.articulos = articulos;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public Status getEstado() {
        return estado;
    }

    public void setEstado(Status estado) {
        this.estado = estado;
    }

    public String getFecha() {
        return fecha;
    }

    public void setFecha(String fecha) {
        this.fecha = fecha;
    }

    public boolean isFrancoABordo() {
        return francoABordo;
    }

    public void setFrancoABordo(boolean francoABordo) {
        this.francoABordo = francoABordo;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public long getNumero() {
        return numero;
    }

    public void setNumero(long numero) {
        this.numero = numero;
    }

    public long getNumeroDePedido() {
        return numeroDePedido;
    }

    public void setNumeroDePedido(long numeroDePedido) {
        this.numeroDePedido = numeroDePedido;
    }

    public long getRequisador() {
        return requisador;
    }

    public void setRequisador(long requisador) {
        this.requisador = requisador;
    }

    public String getTerminos() {
        return terminos;
    }

    public void setTerminos(String terminos) {
        this.terminos = terminos;
    }

    public float getTotalAPagar() {
        return totalAPagar;
    }

    public void setTotalAPagar(float totalAPagar) {
        this.totalAPagar = totalAPagar;
    }

    public String getTransportista() {
        return transportista;
    }

    public void setTransportista(String transportista) {
        this.transportista = transportista;
    }

    public long getVendedor() {
        return vendedor;
    }

    public void setVendedor(long vendedor) {
        this.vendedor = vendedor;
    }

    public String getComentarioDeEstado() {
        return ComentarioDeEstado;
    }

    public void setComentarioDeEstado(String ComentarioDeEstado) {
        this.ComentarioDeEstado = ComentarioDeEstado;
    }
    
}
